/**
 * guid file;
 * company:junqitecch
 * author:xuzuiotao
 * request from the http body throght post method
 */



// Date.prototype.format = function (fmt) { //author: meizz 
// var o = {
//     "M+": this.getMonth() + 1, //月份 
//     "d+": this.getDate(), //日 
//     "h+": this.getHours(), //小时 
//     "m+": this.getMinutes(), //分 
//     "s+": this.getSeconds(), //秒 
//     "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
//     "S": this.getMilliseconds() //毫秒 
// };
// if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
// for (var k in o)
// if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
// return fmt;

// };



	
function create() {
		 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
			  var r = Math.random() * 16 | 0,
				  v = c == 'x' ? r : (r & 0x3 | 0x8);
			  return v.toString(16);
		
		  }).toUpperCase();

}


function generate() {
    let d = new Date().getTime(); // 使用当前时间作为随机种子, 在一些需要唯一性但不要求强安全的场景下足够使用。


    if (typeof performance !== 'undefined' && typeof performance.now === 'function'){


        d += performance.now(); // 使用高精度时间以提高随机性。


    }


    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {


        let r = (d + Math.random()*16)%16 | 0;


        d = Math.floor(d/16);


        return (c=='x' ? r : (r&0x3|0x8)).toString(16);


    });


}

function createTradeNO() {
//	4D8BFB66-F92C-4A0B-9673-A033C1EFE3EC
	 return 'xxxxxxxx'.replace(/[xy]/g, function(c) {
		  var r = Math.random() * 16 | 0,
			  v = c == 'x' ? r : (r & 0x3 | 0x8);
		  return v.toString(10);
	
	  }).toUpperCase();

}

function createOrderNumber(){
	//"4D8BFB66-F92C-4A0B-9673-A033C1EFE3EC
	
	return new Date().format('yyyyMMddhhmmssS'+createTradeNO());

}

module.exports = {
		  create: create,
		  generate:generate,
		  createOrderNumber:createOrderNumber,
		  };
